# Mamibot MQTT v2

## Описание

Этот скрипт предназначен для взаимодействия с устройством Mamibot через MQTT-брокер. Он отправляет статус и информацию об устройстве, а также принимает команды от брокера.

## Зависимости

- Mosquitto MQTT: для публикации и подписки на топики.
- jq: для обработки JSON-ответов.
- a.out: для получения данных от bvrobot
- sendbvmsg: для передачи команд в bvrobot

## Конфигурация

В начале скрипта установлены следующие параметры:

- `broker`: адрес MQTT-брокера.
- `port`: порт брокера.
- `topic_s`, `topic_i`, `topic_cmd`, `response_topic`: топики для публикации и подписки.
- `client_id`: идентификатор клиента.
- `username`, `password`: учетные данные для подключения к брокеру.

## Функции

### send_message()

Отправляет сообщения на брокер. Принимает два параметра: тип топика (`s` для статуса, `i` для информации) и сообщение.

### response_message()

Форматирует и отправляет ответ на брокер. Принимает массив строк и отправляет их как одно сообщение.

### on_message()

Обрабатывает входящие сообщения. Выполняет команду из сообщения и отправляет результат обратно на брокер.

### check_and_restart_mosquitto_sub()

Проверяет, запущен ли процесс `mosquitto_sub`, и если нет, перезапускает его.

## Основной цикл

В основном цикле скрипт:

- Отправляет статус и информацию об устройстве каждые `send_interval` секунд.
- Обрабатывает входящие команды.
- Проверяет состояние подписки на брокер и перезапускает её при необходимости.

## Завершение

В конце скрипта удаляется временный файл с данными и завершается процесс `mosquitto_sub`.

## Запуск

Скрипт должен быть запущен с правами суперпользователя, так как он взаимодействует с системными процессами.

```bash
sudo ./script.sh
```

## Примечания

- Убедитесь, что у вас есть необходимые права для выполнения команд и чтения файлов, указанных в скрипте.
- Обновите параметры в начале скрипта для соответствия вашей конфигурации MQTT-брокера и устройства.
- Этот скрипт предназначен для работы в среде Linux с установленными зависимостями.
